﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace DreamShield.Deployment.Miles.CustomPage.StandardPages
{
    /// <summary>
    /// Page qui affiche une image au tout début de l'installation
    /// (pas de la désinstallation)
    /// </summary>
    public partial class PageSetupSplash : UserControl
    {
        /// <summary>
        /// Plugin interne généré pour l'interraction avec l'installeur
        /// </summary>
        public virtual CustomPagePlugin Plugin { get; protected set; }

        /// <summary>
        /// Variables globales de l'installation
        /// </summary>
        public virtual Dictionary<string, object> GlobalInstallerVariables
        {
            get { return Plugin.GlobalInstallerVariables; }
        }

        /// <summary>
        /// Id de la page générée
        /// </summary>
        public virtual string GeneratedPageId
        {
            get { return "PageSetupSplash"; }
        }

        /// <summary>
        /// Crée une nouvelle page chargée de collecter le nom et le mot de passe d'un utilisateur
        /// pendant l'installation
        /// </summary>
        /// <param name="server">Serveur de plugin Miles actuel</param>
        /// <param name="splashBitmap">Image à afficher dans la page</param>
        public PageSetupSplash(MilesRootServer server, Image splashBitmap)
        {
            if (server == null)
                throw new ArgumentNullException("server");

            InitializeComponent();

            /* création du plugin de page personnalisé */
            Plugin = new CustomPagePlugin(server,
                WizardPagesID.WelcomePage,
                false,
                GeneratedPageId,
                this);

            /* différentes options de la page */
            Plugin.ShowForCustom = false;
            Plugin.ShowForInstall = true;
            Plugin.ShowForUninstall = false;
            Plugin.ShowForUpdate = true;
            Plugin.CanShow = true;
            Plugin.CanGoNext = true;
            Plugin.CanGoBack = false;
            Plugin.CanCancel = true;

            /* Splash */
            splashBox.Image = splashBitmap;
        }
    }
}
